iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0

kubectl

裝好K8S後,可以使用kubectl進行K8S CLUSTER的操作
開啟TERNIAML,輸入以下指令

kubectl command type name flags

command

command指要什麼資源作什麼「動作」,有下列command指令

  • get : 取得物件的某某資訊
  • describe : 取得物件的敘述說明
  • create : 新增某某物件
  • delete : 刪除某某物件

type

資源的類型,EX

kubectl get pod 

這邊有很詳細的類型別 资源类型
比較常用的不外是

kubectl get pod 
kubectl get pods
kubectl get nodes
kubectl get servies
kubectl get namespaces

name

name就資源名稱,ex pod name,node name,如果要查看複數的資源時,加個空白就可以ex

kubectl get pod coredns-558bd4d5db-8pz59 coredns-558bd4d5db-ldx8g -n kube-system

執行結果

NAME                       READY   STATUS    RESTARTS   AGE
coredns-558bd4d5db-8pz59   1/1     Running   1          20h
coredns-558bd4d5db-ldx8g   1/1     Running   1          20h

flag

flag是option,目前常用的flag就是 -n ,指定namespace,如果沒加-n namespace就是default

kubectl get pods
No resources found in default namespace.

常用指令

kubectl config

最最最重要的指令

kubectl config current-context

不管要什麼異動k8s的動作前,一定要先下kubectl config current-context,確認目前cluster是不是要操作的對象,下面是比較常常會使用到的語法(來源:kubectl cli)

current-context 顯示目前的 context
delete-cluster 刪除 kubeconfig 檔案中指定的叢集(cluster)
delete-context 刪除 kubeconfig 檔案中指定的 context
get-clusters 顯示 kubeconfig 檔案中定義的叢集(cluster)
get-contexts 描述一個或多個 context
use-context 設置 kubeconfig 檔案中的目前 context

kubectl logs

看log是碼農的日常/images/emoticon/emoticon06.gif

查詢pod snapshot的log資料

kubectl logs kube-proxy-plnjz -n kube-system

查詢pod streaming的log資料

kubectl logs -f -p kube-proxy-plnjz -n kube-system

二都差在-f的log資料會一直顯示出來,如果需要一直觀察log記錄的情形下,記得加上-f

查詢最近n筆資料

kubectl logs --tail=20 -p kube-proxy-plnjz -n kube-system

kubectl exec

指令
kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...] [options]
對pod執行指令,像是要進到redis pod裡面下redis-cli之類時可以用到

kubectl exec -ti test-redis -- /bin/bash

Kubectl apply/delete

apply可以針對cluster進行建立/更新資源,反之delete是進行刪除,因為後面會介紹helm,所以apply就不再進行介紹,還有一個部份要注意,如果你apply上去的yaml檔有異動裡面的內容,這樣子進行delete會發生錯誤喔,要記得delete要跟apply同一份yaml

kubectl apply -f test.yaml
kubectl delete -f test.yaml

Kubectl portforward

這個指令對於K8s使用者們來說,除了查log外,portforward應該是船長們的日常,
portforward這功能簡單來說,就是把你電腦跟k8s透過http port進行相連,如下圖

前面port是本機,後面是pod的port,別搞錯喔~~

kubectl port-forward nginx-43d51d22a1-3aa1q 8787:80

這樣子在本機打127.0.0.1:8787會轉到nginx /images/emoticon/emoticon01.gif

以上大概是個人很常用的指令,還有一些特殊需求時才會下的就不特別提出來講了,因為太


上一篇
[DAY4]K8S裡面的小小兵-POD
下一篇
[DAY6]從0開始裝k8s(1)-kind
系列文
k8s新手船長船難記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言